内部命令
android的adb等工具,并不是内部命令,每次使用都需要指定路径。将其所在的路径添加到~/.bashrc文件中:
# android adb # export ANDROID_HOME=/home/ny/android/adt-bundle-linux-x86-20130729/sdk # export PATH=$PATH:$ANDROID_HOME/platform-tools
使用命令source ~/.bashrc
使修改生效。
可以使用type命令查看现在执行的adb命令的位置。
root@ny-server01:~# type adb adb 是 /home/ny/android/adt-bundle-linux-x86-20130729/sdk/platform-tools/adb root@ny-server01:~#
shell的定制
工作中经常使用Cygwin的shell,但是其中ls命令所有显示都是黑白,其实可以如下定制: 修改用户目录下的.bashrc文件。
例如,ls命令分颜色显示目录、文件、链接文件等不同类型的目录或者文件
- 将alias ls='ls -hF --color=tty'前面的注释号#去掉
- 使用source .bashrc命令重置环境变量或者重启shell
例如,如果习惯使用ll命令
- 则将alias ll='ls -l'前面的注释#去掉,然后重置环境变量
当然,你也可以使用dircolors命令去改变ls --color的颜色输出。
#!
#!
实际上是一个2 字节的魔法数字,这是指定一个文件类型的特殊标记,man magic 来获得关于这个迷人话题的更多详细信息。
当然"#!"也可以被忽略,不过这样你的脚本文件就只能是一些命令的集合,不能够使用shell 内建的指令了,如果不能使用变量的话,当然这也就失去了脚本编程的意义了.
shell脚本用户切换密码输入
想在shell脚本中实现用户切换,如下:
#!/bin/sh su - user1 << END user1passwd END
这个恐怕办不到了,su也不允许通过重定向输入密码。可以使用root用户执行这个脚本,这样su时就不要输入密码了。
su读密码是通过/dev/tty读的,而不是通过stdin。所以你用普通的stdin重定向不能实现自动输入密码的功能。
我也试过,只能通过/dev/tty,不能同步哦stdin。如:
Assembly code echo -e "user\npass\n" | su standard in must be a tty
shell脚本切换路径
我在一个脚本中切换了路径,如下:
#!/bin/bash cd /home/winter
运行推出后发现仍然是在运行脚本的路径,请教如何才可以在退出脚本后进入我指定的目录呢?
通常,当你执行一个shell script时,shell会重新运行一个新的shell来执行,而你执行cd xxx, 只是那个新的shell cd到xxx, 执行完退出,原本的shell当然没有变化,但有另一种执行方式, 可以让当前的shell直接执行命令, 这样就可以达到你要的效果了,将./shell_script.sh 改为 source ./shell_script.sh
shell编辑命令行
通过光标和功能键(Home、End 等键),您可以浏览并编辑命令行,如果您需要,还可以用键盘的快捷方式来完成一般的编辑:
- <CTRL k>:删除从光标到行尾的部分
- <CTRL u>:删除从光标到行首的部分
- <ALT d>:删除从光标到当前单词结尾的部分
- <CTRL w>:删除从光标到当前单词开头的部分
- <CTRL a>:将光标移到行首
- <CTRL e>:将光标移到行尾
- <ALT a>:将光标移到当前单词头部
- <ALT e>:将光标移到当前单词尾部
- <CTRL y>:插入最近删除的单词
- <!$>:重复前一个命令最后的参数。
例如:您用命令 mkdir peter/pan/documents/tinkerbell 新建了一个目录,现在您向用命令'cd'进入该目录,您可以用 cd !$,shell 将把前一个命令'mkdir'的参数添加到现在的'cd'后面。当您更深入了解Linux后,将看到这些快捷方式在其他应用程序下输入时,有时也有效,比如,在浏览器中的输入框中。
LD_LIBRARY_PATH
Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找)当执行函数动态链接.so时,如果此文件不在缺省目录下‘/usr/local/lib’ and ‘/usr/lib’. 那么就需要指定环境变量LD_LIBRARY_PATH。假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式:
LD_LIBRARY_PATH=NEWDIRS:$LD_LIBRARY_PATH.(newdirs是新的路径串)(注:gnu系统可以自动添加在 /etc/ld.so.conf文件中来实现环境变量的设置)
[root@localhost etc]# ls /etc/ld.so* /etc/ld.so.cache /etc/ld.so.conf kernel-2.6.31.5-127.fc12.i686.PAE.conf qt-i386.conf xulrunner-32.conf mysql-i386.conf tix-i386.conf